package com.goodfox.web.generic.role.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.RowBounds;

import com.goodfox.web.generic.role.entity.Role;
import com.goodfox.web.generic.role.entity.RoleFunction;

/**
 * 角色映射类
 * @author qin gt
 *
 */
public interface RoleMapper {

	/**
	 * 查询角色列表
	 * @param map
	 * @return
	 */
	List<Role> selectRoleList(Map map);

	/**
	 * 查询角色列表(分页)
	 * @param map
	 * @return
	 */
	List<Role> selectRoleList(Map map,RowBounds rowBounds);
	
	/**
	 * 查询角色列表数量
	 * @param map
	 * @return
	 */
	Long selectRoleListCount(Map map);
	
	/**
	 * 新增角色
	 * @param role
	 */
	void insertRole(Role role);

	/**
	 * 修改角色
	 * @param role
	 */
	void updateRole(Role role);

	/**
	 * 删除角色
	 * @param roleId
	 */
	void deleteRoleById(String roleId);
	
	/**
	 * 查询角色
	 * @param roleId
	 * @return
	 */
	Role selectRoleById(String roleId);
	
	/**
	 * 新增角色功能关系表 
	 * @param map
	 */
	void insertRoleFunction(RoleFunction roleFun);
	
	/**
	 * 根据角色Id删除角色功能关系表
	 * @param roleId
	 */
	void deleteRoleFunctionById(String roleId);
	
	/**
	 * 根据角色名称获取角色
	 * @param name
	 * @return
	 */
	Role selectRoleByName(String roleName);
	
	/**
	 * 根据角色Id获取角色账号数量
	 * @param roleId
	 * @return
	 */
	Long selectRoleAccountCount(String roleId);
	
	/**
	 * 删除不能适用的角色功能关系
	 * @param roleId
	 */
	void deleteRoleFunctionNoVisit(Role role);
}
